home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_12 / pjp / iomanip < prev   
Encoding:
Text File  |  1994-10-04  |  2.7 KB  |  81 lines

  1. ------------- Listing 1: The file iomanip ------------------
  2.  
  3. // iomanip standard header<R>
  4. #ifndef _IOMANIP_<R>
  5. #define _IOMANIP_<R>
  6. #include <<istream>><R>
  7. #include <<ostream>><R>
  8.                 // template class smanip<R>
  9. template<<class _T>> class smanip {<R>
  10. public:<R>
  11.         smanip(ios& (*_F)(ios&, _T), _T _A)<R>
  12.                 : _Pf(_F), _Manarg(_A) {}<R>
  13.         ios& (*_Pf)(ios&, _T);<R>
  14.         _T _Manarg;<R>
  15.         };<R>
  16. template<<class _T>> inline<R>
  17.         istream& operator>>>>(istream& _I, const smanip<<_T>>& _M)<R>
  18.         {       // apply manipulator to input stream<R>
  19.         _TRY_BEGIN<R>
  20.                 (*_M._Pf)(_I, _M._Manarg);<R>
  21.         _CATCH_ALL<R>
  22.                 _I.setstate(ios::failbit);<R>
  23.         _CATCH_END<R>
  24.         return (_I);<R>
  25.         }<R>
  26. template<<class _T>> inline<R>
  27.         ostream& operator<<<<(ostream& _O, const smanip<<_T>>& _M)<R>
  28.         {       // apply manipulator to output stream<R>
  29.         _TRY_BEGIN<R>
  30.                 (*_M._Pf)(_O, _M._Manarg);<R>
  31.         _CATCH_ALL<R>
  32.                 _O.setstate(ios::failbit);<R>
  33.         _CATCH_END<R>
  34.         return (_O);<R>
  35.         }<R>
  36.                 // template class imanip<R>
  37. template<<class _T>> class imanip {<R>
  38. public:<R>
  39.         imanip(istream& (*_F)(istream&, _T), _T _A)<R>
  40.                 : _Pf(_F), _Manarg(_A) {}<R>
  41.         istream& (*_Pf)(istream&, _T);<R>
  42.         _T _Manarg;<R>
  43.         };<R>
  44. template<<class _T>> inline<R>
  45.         istream& operator>>>>(istream& _I, const imanip<<_T>>& _M)<R>
  46.         {       // apply input manipulator to input stream<R>
  47.         _TRY_BEGIN<R>
  48.                 (*_M._Pf)(_I, _M._Manarg);<R>
  49.         _CATCH_ALL<R>
  50.                 _I.setstate(ios::failbit);<R>
  51.         _CATCH_END<R>
  52.         return (_I);<R>
  53.         }<R>
  54.                 // template class omanip<R>
  55. template<<class _T>> class omanip {<R>
  56. public:<R>
  57.         omanip(ostream& (*_F)(ostream&, _T), _T _A)<R>
  58.                 : _Pf(_F), _Manarg(_A) {}<R>
  59.         ostream& (*_Pf)(ostream&, _T);<R>
  60.         _T _Manarg;<R>
  61.         };<R>
  62. template<<class _T>> inline<R>
  63.         ostream& operator<<<<(ostream& _O, const omanip<<_T>>& _M)<R>
  64.         {       // apply manipulator to output stream<R>
  65.         _TRY_BEGIN<R>
  66.                 (*_M._Pf)(_O, _M._Manarg);<R>
  67.         _CATCH_ALL<R>
  68.                 _O.setstate(ios::failbit);<R>
  69.         _CATCH_END<R>
  70.         return (_O);<R>
  71.         }<R>
  72.                 // instantiations<R>
  73. smanip<<ios::fmtflags>> resetiosflags(ios::fmtflags);<R>
  74. smanip<<ios::fmtflags>> setiosflags(ios::fmtflags);<R>
  75. smanip<<int>> setbase(int);<R>
  76. smanip<<int>> setfill(int);<R>
  77. smanip<<int>> setprecision(int);<R>
  78. smanip<<int>> setw(int);<R>
  79. #endif
  80.  
  81.